package com.tpl.core.basedata.dao;

import java.util.List;

import com.tpl.core.common.annotation.DaoAnnotation;
import com.tpl.core.entity.sys.User;
import org.apache.ibatis.annotations.Param;



/**
 * 说明 :用户数据访问层
 * @author <a href="mailto:3380084@gmail.com">张坤雷</a>
 * @version 创建时间：2013-7-3 下午5:40:45 
 *
 */
@DaoAnnotation
public interface UserDao {
	/**
	 * 
	 * 说明 :根据用户编码获取用户信息
	 */
	User getUserByUserNo(String userNo);
	/**
	 * 说明:查询所有的用户信息 
	 * */
	List<User>findAll(User user);
	/**
	 * 
	 * 说明 :根据用户ID获取用户信息
	 */
	User getUserById(Long id);
	/**
	 * 
	 * 说明 :根据部门ID获取用户分页信息
	 */
	List<User> getUserPageByDeptId(@Param("deptId")Long deptId,@Param("user")User user,@Param("pageIndex")int pageIndex,@Param("pageSize")int pageSize);
	
	/**
	 * 通过部门id获取部门下所有人员
	 * @param deptId
	 * @return
	 */
	List<User> getUserByDeptId(@Param("deptId")Long deptId);
	/**
	 * 通过部门id获取部门下所有人员
	 * @param deptId
	 * @return
	 */
	List<User> getUserByDeptId(@Param("deptId")Long deptId,@Param("params")String params);
	/**
	 * 
	 * 说明 :根据部门ID获取用户总数
	 */
	int getUsersByDeptIdCount(@Param("deptId")Long deptId,@Param("user")User user);
	/**
	 * 
	 * 说明 :插入用户
	 */
	void insertUser(User user);
	/**
	 * 
	 * 说明 :更新用户
	 */
	void updateUser(User user);
	/**
	 * 
	 * 说明 :删除用户
	 */
	void deleteUser(Long userId);
	/**
	 * 
	 * 说明 :判断用户登录名是否存在
	 */
	User checkUserLoginNo(@Param("loginNo")String loginNo,@Param("userId")String idCard);
	/*说明:添加新用户信息
	 * */
	void saveUser(User user);
	/**
	 * 说明:根据 id查询用户 信息
	 * */
	User findUserById(long id);
	/**说明:根据 id删除用户信息
	 * */
	void delUser(long id);
	/**通过用户名 查询 用户 信息 
	 * */
	User findByUsername(String username);
	
	void updateUserByNo(User user);
	
	List<User> getUserByDeptIds(@Param("deptIds")String deptIds,@Param("pageIndex")int pageIndex,@Param("pageSize")int pageSize);
	
	int getUserByDeptIdsCount(String deptIds);

}
